set: Add a few useful functions
authorMatthias Clasen <mclasen@redhat.com>
Fri, 5 Jun 2020 01:35:53 +0000 (21:35 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 5 Jun 2020 17:49:23 +0000 (13:49 -0400)
Allow to find out if a set is empty, and its
min and max.

gtk/gtkset.c
gtk/gtkset.h

index 69f1dea72e07f8bc891f89ba4372ca1770124ba6..18fab23c563b8cc634c99fe7bd58b8d139789429 100644 (file)
@@ -335,6 +335,38 @@ next_range:
   return TRUE;
 }
 
+gboolean
+gtk_set_is_empty (GtkSet *set)
+{
+  return set->ranges->len == 0;
+}
+
+guint
+gtk_set_get_min (GtkSet *set)
+{
+  Range *r;
+
+  if (gtk_set_is_empty (set))
+    return 0;
+
+  r = &g_array_index (set->ranges, Range, 0);
+
+  return r->first;
+}
+
+guint
+gtk_set_get_max (GtkSet *set)
+{
+  Range *r;
+
+  if (gtk_set_is_empty (set))
+    return 0;
+
+  r = &g_array_index (set->ranges, Range, set->ranges->len - 1);
+
+  return r->first + r->n_items - 1;
+}
+
 #if 0
 void
 gtk_set_dump (GtkSet *set)
index d0ba4e1a96efdbe4c799f151a2dcaaa01ef11582..1ab6c6d1a2e7307196a579c75dead706d4c8c7d6 100644 (file)
@@ -67,4 +67,8 @@ void      gtk_set_iter_init    (GtkSetIter *iter,
 gboolean  gtk_set_iter_next    (GtkSetIter *iter,
                                 guint      *item);
 
+gboolean  gtk_set_is_empty     (GtkSet *set);
+guint     gtk_set_get_min      (GtkSet *set);
+guint     gtk_set_get_max      (GtkSet *set);
+
 #endif  /* __GTK_SET_H__ */